* @return IORMTable
*/
public static function singleton() {
- $class = function_exists( 'get_called_class' ) ? get_called_class() : self::get_called_class();
+ $class = get_called_class();
if ( !array_key_exists( $class, self::$instanceCache ) ) {
self::$instanceCache[$class] = new $class;
return self::$instanceCache[$class];
}
- /**
- * Compatibility fallback function so the singleton method works on PHP < 5.3.
- * Code borrowed from http://www.php.net/manual/en/function.get-called-class.php#107445
- *
- * @since 1.20
- *
- * @return string
- */
- protected static function get_called_class() {
- $bt = debug_backtrace();
- $l = count($bt) - 1;
- $matches = array();
- while(empty($matches) && $l > -1){
- $lines = file($bt[$l]['file']);
- $callerLine = $lines[$bt[$l]['line']-1];
- preg_match('/([a-zA-Z0-9\_]+)::'.$bt[$l--]['function'].'/',
- $callerLine,
- $matches);
- }
- if (!isset($matches[1])) $matches[1]=NULL; //for notices
- if ($matches[1] == 'self') {
- $line = $bt[$l]['line']-1;
- while ($line > 0 && strpos($lines[$line], 'class') === false) {
- $line--;
- }
- preg_match('/class[\s]+(.+?)[\s]+/si', $lines[$line], $matches);
- }
- return $matches[1];
- }
-
/**
* Get an array with fields from a database result,
* that can be fed directly to the constructor or